#ifndef DATA_STRUCT_CODE_STATICLINKLIST_H
#define DATA_STRUCT_CODE_STATICLINKLIST_H


class StaticLinkList {
public:
    StaticLinkList();          // 构造函数
    ~StaticLinkList();         // 析构函数（不做实际释放，仅作形式保留）

    bool Empty() const;        // 判断是否为空
    int Size() const;          // 获取元素个数

    void Insert(int pos, int value);  // 在位置 pos 插入（1-based）
    void Remove(int pos);             // 删除位置 pos 的元素
    int Get(int pos) const;           // 获取第 pos 个元素
    void Set(int pos, int value);     // 修改第 pos 个元素
    bool Find(int value) const;       // 查找元素是否存在

    void Clear();              // 清空链表
    void Print() const;        // 打印链表

private:
    static const int kMaxSize = 100;  // 最大容量（含备用空间）
    struct Node {
        int data;
        int next;   // 模拟指针：下一个元素的索引
    };

    Node nodes_[kMaxSize];     // 节点数组
    int head_;                 // 头节点索引
    int free_;                 // 备用链表的起始索引（空闲节点链表）
    int size_;                 // 当前元素个数

    int Malloc();              // 分配一个空闲节点（模拟 malloc）
    void Free(int index);      // 释放一个节点回收空间
};


#endif //DATA_STRUCT_CODE_STATICLINKLIST_H
